#ifndef STATE_H
#define STATE_H

// Libraries
#include <irrlicht.h>
#include "enet/enet.h"

// Namespaces
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

// Classes
class CState 
{
public:
	virtual ~CState(){}

	// Setup functions
	virtual bool Init(){return true;}
	virtual bool Close(){return true;}

	virtual bool Show(){return true;}
	virtual bool Hide(){return true;}

	// Events
	virtual bool HandleKeyPress(EKEY_CODE TKey){return false;}
	virtual bool HandleKeyRelease(EKEY_CODE TKey){return false;}
	virtual bool HandleMousePress(int TButton, int TMouseX, int TMouseY){return false;}
	virtual void HandleMouseRelease(int TButton, int TMouseX, int TMouseY){}
	virtual void HandleMouseWheel(float TDirection){}
	virtual void HandleMouseMotion(int TMouseX, int TMouseY){}
	virtual void HandleGUI(EGUI_EVENT_TYPE TEventType, IGUIElement *TElement){}

	virtual void HandleConnect(ENetEvent *TEvent){}
	virtual void HandleDisconnect(ENetEvent *TEvent){}
	virtual void HandlePacket(ENetEvent *TEvent){}

	// Update
	virtual void Update(u32 TDeltaTime){}
	virtual void Draw() {};
};

#endif
